// 封装的一个动画函数
//  obj 元素对象
//  target 移动距离
//  callback 回调函数
function animate(obj, target, callback) {
    // 先清理元素中定义的计时器
    clearInterval(obj.timer);
    obj.timer = setInterval(() => {
        if (obj.offsetLeft == target) {
            clearInterval(obj.timer);
            callback && callback();
            return;
        }

        // 计算移动步长
        let step = (target - obj.offsetLeft) / 10;
        // 考虑回退步长为负的情况，分别不同的取整，保证步长非0
        step = step > 0 ? Math.ceil(step) : Math.floor(step);
        obj.style.left = obj.offsetLeft + step + 'px';
    }, 15);
}